// 此模块化下面的数据是要在多个组件间共享
import { defineStore } from 'pinia'

// id,模块化的名称,唯一不能重复,相当于命名空间名称
// 一般情况下面和当前的文件名称一致
const useNumStore = defineStore('num', {
  // 数据 函数 返回一个对象
  state: () => ({
    count: 100,
    name: 'aaa',
    arr: [1]
  }),
  getters: {
    showCount() {
      return this.count + '@@'
    }
  },
  // 修改state中的数据,推荐方案
  // 数据和修改的方法,尽可能的写在一起
  actions: {
    setCount(n) {
      // 单个字段的修改,可以用此方案
      this.count += n
    },
    setCountAndName() {
      // this.$patch({})
      this.$patch(state => {
        state.count++
        state.name = Date.now()
        state.arr.push(Date.now())
      })
    }
  }
})

export default useNumStore

// Omit type a = {id,name,age}
// type b = Omit<a,'name'>  Pick<a,'id'>
